
# 函数
"""
定义 ： 具有特定功能的代码块 ，比如登录 ，相加
格式 ：
def 函数名(参数列表):
    代码块
作用：被调用处去调用(使用) ，就能使用此函数的功能 。 调用函数时直接使用函数名

说明：
    参数列表中的参数个数需要和实际的参数数量要保持一致，即形参数量和实参数量保持一致 ，顺序保持一致 。
"""

# 1. 定义函数 ：加法
def add(x,y):
# ?
    # return z
    # print(z)
    return x + y

# print(add(3,4))
# print(add(8,4))

a = add(3,4)
print(a)

def get_result():
    score = 78
    if score >= 90:
        return "优秀"
    if score >= 75:
        return "良"
    if score >= 60:
        return "及格"
    return "不及格"

print(get_result())


def get_result1(score):     # score 在这里称为形式参数 ，简称形参 。
    # score = 78
    if score >= 90:
        return "优秀"
    if score >= 75:
        return "良"
    if score >= 60:
        return "及格"
    return "不及格"


# 1. 位置参数 ：即形参数量和实参数量保持一致 ，顺序保持一致 ，传多或传少都会报错 。
# 调用get_result1()
print(get_result1(89))      # 这里的89是实际参数 ，简称实参 。
# print(get_result1())        # 没有传递
# print(get_result1(89,20))      # 多传了一个参数 。


# print(get_result1('hello'))

# 2. 关键字参数
def login(username,password,ismem):
    if ismem == 1:
        print("需要记住密码")
    if username == 'admin' and password == '123456':
        return "登录成功"
    else:
        return "登录失败"


# 调用 ：以key=value的形式去传递
print(login('admin','123456',2))                    # 位置参数 ，
print(login(username='admin',password='123456',ismem=2))
print(login(ismem=2,password='123456',username='admin'))        # 可以将参数的顺序可以颠倒
print(login('admin','123456',ismem=1))      # 位置参数和关键字参数结合使用
# print(login(ismem=1,'admin','123456',))      # 此种写法是错误的，不能将关键字参数放在位置参数前 。


# 3. 默认值参数
def login1(username,password,ismem=0):
    if ismem != 0:
        print("需要记住密码")
    else:
        print("用户不需要记住密码")

    if username == 'admin' and password == '123456':
        return "登录成功"
    else:
        return "登录失败"

print(login1('admin','1234567',1))
print(login1('admin','1234567'))